package com.threegroup.admin.dao;


import com.threegroup.admin.entity.SysUserEntity;
import com.threegroup.admin.query.SysUserQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 系统用户
 *
 * @author kohlerm kohlerm@163.com
 * @since 1.0.0 2022-12-16
 */
@Mapper
public interface SysUserDao{

    /**
     * 根据用户名称查询用户信息
     * @param userName 用户名称
     * @return
     */
    SysUserEntity selectUserByUsername(@Param("userName") String userName);

    /**
     * 分页查询 -- 获取用户列表
     * @param sysUserQuery 查询条件
     * @return
     */
    List<SysUserEntity> selectUserList(SysUserQuery sysUserQuery);

    /**
     * 保存用户
     * @param sysUserEntity 用户信息
     * @return
     */
    Integer save(SysUserEntity sysUserEntity);

    /**
     * 根据用户Id查询用户信息
     * @param uid 用户id
     * @return
     */
    SysUserEntity selectUserById(@Param("uid") Long uid);

    /**
     * 根据用户id修改用户信息
     * @param sysUserEntity
     * @return
     */
    int update(SysUserEntity sysUserEntity);

    /**
     * 根据用户id 删除用户信息
     * @param ids 主键 id 数组
     */
    int deleteBatchIds(Long[] ids);

    /**
     * 修改密码
     * @param uid 用户id
     * @param newPassword 新密码
     */
    int updatePassword(@Param("uid") Long uid, @Param("newPassword") String newPassword);

    /**
     * 根据部门ID，查询用户数
     */
    int getCountByDeptId(@Param("deptId") Long deptId);
}